import org.junit.Test;

import static org.junit.Assert.*;

public class NGuessNumberTest{
    @Test
    public void getPlayerInputTest() {
        NGuessNumber ng = new NGuessNumber();

        assertEquals(4,ng.getPlayerInput().length);
        System.out.println("输入了四个数字，正确!");
    }
    @Test
    public void compareGuessAnswerTest() {
        NGuessNumber ng= new NGuessNumber();

        int tg []= ng.getPlayerInput();
        int tn []= ng.generateAnswer();
        int A = 0;
        int B= 0;
        for (int i=0;i<tg.length;i++){
            for (int j=0;j<tn.length;j++){
                if (i!=j){
                    if (tn[i]==tg[j]){
                       A++;
                    }
                }else {
                    if (tn[i]==tg[j]){
                        B++;
                    }
                }
            }
        }
        String s = A+"A"+B+"B\n"+"A表示存在且位置正确的数字个数，B表示存在且位置不正确的数字个数！\n"+"如：1A2B,表示你猜测的四个数字有3个是对的，有一个位置对，两个位置不对。";

        assertEquals(s,ng.compareGuessAnswer());

        System.out.println();
        System.out.println("测试比较玩家猜测和答案后，返回的提示信息，正确");
    }
    @Test
    public void generateAnswerTest() {
        NGuessNumber ng = new NGuessNumber();
    assertEquals(4, ng.generateAnswer().length);
        System.out.println("数字数量为4");

    int num [] = NGuessNumber.generateAnswer();

    boolean ceshi = false;
    int ns = 0;

        for (int i=0; i<4; i++){
        if(num[i]>=0&&num[i]<=9){
            ns=1;
        }else{
            ns=0;
        }
        for (int l=0; l<=i; l++){
            if(i!=l) {
                if (num[i] == num[l]) {
                    ceshi = false;
                } else {
                    ceshi = true;
                }
            }
        }
    }
    assertEquals(true,ceshi);
        System.out.println("其中无重复数字，正确!");

    assertEquals(1,ns);
        System.out.println("数字都在0-9之间，正确!");
}
    @Test
    public void isWinTest() {
        NGuessNumber ng = new NGuessNumber();
        if(NGuessNumber.isWin()==true){
            assertEquals(true, NGuessNumber.isWin());
            System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型正确!");
        }else if(NGuessNumber.isWin()==false){
            assertEquals(false, NGuessNumber.isWin());
            System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型正确!");
        }else{
            assertEquals(true, NGuessNumber.isWin());
            assertEquals(false, NGuessNumber.isWin());
            System.out.println("根据提示信息中A的数量判断玩家是否获胜，如果获胜返回true，否则返回false，返回结果类型错误!");

        }
    }
}